package com.han.dao.abstraction.product;

import java.sql.SQLException;
import java.util.ArrayList;
import javax.naming.NamingException;
import com.han.bom.Student;
import com.han.bom.User;

public interface GenericUserDAO {
	public User retrieveUserById(String userID) throws ClassNotFoundException,
			SQLException, NamingException;

	public User retrieveUserByUsername(String username)
			throws ClassNotFoundException, SQLException, NamingException;

	public ArrayList<Student> retrieveStudentsByProfessor(String profID)
			throws ClassNotFoundException, SQLException, NamingException;

	public ArrayList<Student> retrieveStudentsIncludedInExam(String examid)
			throws ClassNotFoundException, SQLException, NamingException;

	public ArrayList<Student> retrieveStudentsByExamTaken(String examID)
			throws ClassNotFoundException, SQLException, NamingException;

	public ArrayList<Student> retrieveStudentsTakingExam(String examID)
			throws ClassNotFoundException, SQLException, NamingException;

	public ArrayList<Student> retrieveStudentsByExamMissed(String examID)
			throws ClassNotFoundException, SQLException, NamingException;

	public ArrayList<Student> retrieveStudentsByKeyword(String key,
			String profID) throws ClassNotFoundException, SQLException,
			NamingException;

	public int retrieveMaxUserID() throws ClassNotFoundException, SQLException,
			NamingException;

	public boolean addStudentToProfessor(String studentId, String profId)
			throws SQLException, ClassNotFoundException, NamingException;

	public boolean insertUser(User user) throws SQLException,
			ClassNotFoundException, NamingException;

	public boolean updateUser(User user) throws SQLException,
			ClassNotFoundException, NamingException;

	public boolean deleteUser(String userId) throws SQLException,
			ClassNotFoundException, NamingException;
}
